constraint runs=pow(2,ceil(log2(n[num_factors])+0.001));
solve minimize runs;
I get:
Error: evaluation error: comprehension iterates over an infinite set
/home/gilla/file.mzn:36.12-55
in binary '=' operator expression
in call 'pow'
/snap/minizinc/1136/share/minizinc/std/stdlib/stdlib_math.mzn:664.3-674.7
in if-then-else expression
/snap/minizinc/1136/share/minizinc/std/stdlib/stdlib_math.mzn:669.5-82
in if-then-else expression
in call 'pow_t'
/snap/minizinc/1136/share/minizinc/std/stdlib/stdlib_internal.mzn:2867.3-2871.8
in let expression
/snap/minizinc/1136/share/minizinc/std/stdlib/stdlib_internal.mzn:2870.16-31
in call 'int_pow'
/snap/minizinc/1136/share/minizinc/gecode/redefinitions.mzn:82.5-87.25
in let expression
/snap/minizinc/1136/share/minizinc/gecode/redefinitions.mzn:83.9-86.9
in variable declaration for 'pow_table'
in array comprehension expression
But it seems to work if I instead do (since its a monotonic function):
solve minimize n[num_factors];
output ["Solution:\n", "Sequencies = ", show(n),"\nruns = ", show(pow(2,ceil(log2(n[num_factors])+0.001)))];
I would prefer the first version, so I'm not sure why it doesn't work (but the latter does).
Any advice gratefully accepted!